#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    init();//调用程序初始化函数
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_btnQuit_clicked()
{
    //关闭程序
    this->close();
}

void MainWindow::init()
{
    //设置用户姓名标签
    ui->labUsername->setText(g_userName);

    //初始化学生信息表格
    m_studentModel=new QSqlTableModel(this,g_db);//实例化
    m_studentModel->setTable(g_tbStudent);//设置数据库表名
    m_studentModel->setEditStrategy(QSqlTableModel::OnManualSubmit);//设置编辑模式为人工提交模式
    m_studentModel->select();//加载数据

    //初始化界面视图,并绑定视图模型
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//拉伸列宽
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置默认不可编辑
    ui->tableView->setModel(m_studentModel);//绑定视图模型
}


void MainWindow::on_btnFind_clicked()
{
    //获取需要查找的内容文本
    QString findStr=ui->editFindText->text();

    if(findStr.isEmpty()){//如果查找内容为空则显示所有行
        for(int i=0;i<m_studentModel->rowCount();++i){
            ui->tableView->showRow(i);
        }
    }else{//显示包含该内容的行
        for(int i=0;i<m_studentModel->rowCount();++i){
            ui->tableView->hideRow(i);//隐藏改行
            for(int j=0;j<m_studentModel->columnCount();++j){
                if(m_studentModel->data(m_studentModel->index(i,j)).toString().contains(findStr)){//如果改行的某列文本包含要查找的内容则显示改行
                    ui->tableView->showRow(i);
                    break;
                }
            }
        }
    }
}


void MainWindow::on_cheEditEnable_stateChanged(int arg1)
{
    //如果选中编辑框1则启用编辑,否则禁用编辑
    if(arg1)ui->tableView->setEditTriggers(QAbstractItemView::AllEditTriggers);
    else ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
}


void MainWindow::on_btnDelete_clicked()
{
    //获取当前选中行
    QModelIndex index=ui->tableView->currentIndex();
    if(index.isValid()){//如果当前行可用,则删除当前行,并取消当前选中行
        m_studentModel->removeRow(index.row());
        ui->tableView->setCurrentIndex(QModelIndex());
    }
}


void MainWindow::on_btnReset_clicked()
{
    //重新从数据库中加载当前模型
    m_studentModel->select();
}


void MainWindow::on_btnSubmit_clicked()
{
    //提交当前数据模型到数据库
    if(m_studentModel->isDirty()){
        m_studentModel->submitAll();
        QMessageBox::information(this,"提示","数据提交成功!");
    }
}


void MainWindow::on_btnAppend_clicked()
{
    //添加一行到末尾
    m_studentModel->insertRow(m_studentModel->rowCount());
}

